Lightweight application integration for mobile cloud computing

ABSTRACT

Disclosed herein are technologies to provide lightweight software applications deployable on mobile devices that allow users and intermediary solution providers to receive specific data or information from application or solutions. In accordance with one aspect, a configuration file is uploaded and an input message is received from a user. The input message is mapped to one or more commands related to the configuration file, and the one or more mapped commands is run in order to extract data requested by the input message.

TECHNICAL FIELD

The present disclosure relates generally to allowing users to requestand receive specific data or information from network or cloud basedapplication or solution provider.

BACKGROUND

Software applications or solutions may be provided to end users throughan intermediary party that receives the application or solution from asoftware provider. This may particularly be the case, where network orcloud computing is involved. Mobile computing may be involved, where endusers have mobile devices implementing the applications or solutions.Various networks may be involved, including the “cloud.”

In certain instances, a user or the intermediary party desires to extendor modify the standard application or solution. Reasons for extendingmay include the desire to receive specific data or information, such asnames, multimedia objects, and the like from databases, webpages, etc.

Several issues arise as to the ability to extend or modify the standardapplication or solution, including unavailability of add-on applicationsto a mobile application or solution; the difficulty for the user orintermediary to create or modify a mobile application or solution (e.g.,learning Android™ Operating System (OS) or iOS™ OS); the effort to learnweb development for cross browser or form factor; the unified userinterface look and feel; and the difficulty to publish, deploy andmaintain a mobile application or solution.

SUMMARY

Disclosed herein are technologies to provide lightweight softwareapplications deployable on mobile devices that allow users andintermediary solution providers to receive specific data or informationfrom application or solutions. In accordance with one aspect, aconfiguration file is uploaded and an input message is received from auser. The input message is mapped to one or more commands related to theconfiguration file, and the one or more mapped commands is run in orderto extract data requested by the input message.

With these and other advantages and features that will becomehereinafter apparent, further information may be obtained by referenceto the following detailed description and appended claims, and to thefigures attached hereto.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary system;

FIG. 2 illustrates an exemplary process;

FIG. 3 illustrates an exemplary process;

FIG. 4 illustrates another exemplary process; and

FIG. 5 illustrates an exemplary computing system to implement thetechnologies described herein.

The Detailed Description references the accompanying figures. In thefigures, the left-most digit(s) of a reference number identifies thefigure in which the reference number first appears. The same numbers areused throughout the drawings to reference like features and components.

DETAILED DESCRIPTION

Described herein is a framework to provide lightweight applicationsallowing users to request and be provided specific data or information.In certain cases, the requests are relatively simple, and follow a typeof a “command to action” model. For example, a user may desire to checka particular customer's account information or show a list of topcustomers. Top customers may be, for instance, those with accountslarger than 1,000 orders. The user may desire to show an order list withmatching customers.

In the description, the terms application and solution may beinterchangeable. An application may be a software program that isintegrated and maintained by a provider. A solution may refer to anapplication, and may also refer to a webpage. In certain instances, dataor information is extracted from the application or solution, or fromother applications, solutions, databases, etc., that are accessed by theapplication or solution.

In this description, the term “lightweight application” is used. Alightweight application may refer generally to a simplified applicationthat is deployed on a user device, such as a mobile device. Alightweight application may be defined as an application that allows forquick user response, allowing the user to provide simple text orgraphical commands, returns simple text or graphical messages to theuser, and links to various external applications or solutions such aswebpages, extracting particular objects requested by the user. Alightweight application may be further defined as not having acomplicated business interaction; in others words, having reduced orsimplified user interaction. An advanced message-style interface may beprovided by the lightweight application allowing the user to inputcommands by plain text in a message box to the application or solution(i.e., system). The system may return information or data by sending amessage back to the user using the lightweight application. Thelightweight application may provide a shortcut menu to replace a freetext command. A returned message may link to a system or user definedbusiness object, or external webpage. This may be through a universalresource locator or URL.

FIG. 1 shows an example network or system 100 that implements thetechnologies described herein. Several users 102 are illustrated. Inparticular, users 102 may have mobile devices running or accessingapplications or solutions. In this description, a lightweightapplication is deployed on the devices of users 102, such as the mobiledevices. Users are connected or provided access to one or more networks104. Network 104 can include the “cloud.”

Intermediary party 106 provides intermediary applications or solutions108 to users 102. Connection between party 106 and users may be throughnetwork 104. Applications or solutions 108 may include configurationfiles that are created, updated and maintained by the intermediary party106. In particular, the intermediary party 106 prepares configurationfiles or profiles. The configuration files or profiles support commandsand other pattern information that is provided to a software provider110. For example, pattern information may include extensible markuplanguage (XML) and JavaScript Object Notation (JSON).

The intermediary party 106 in particular, receives requests from theusers 102 and sends data or information regarding such requests back tousers 102. In certain cases, there may be more than one intermediaryparty 106.

The software provider 110 provides an application or solution 112. Incertain cases, there may be more than one software provider 110.Application or solution 112 may include software applications, and mayalso include databases, webpages, and any other product or service thatincludes or is connected to various objects or object code. Inparticular, application or solution 112 includes information used byintermediary party 106 and users 102. In addition, desired informationor data as requested by users 102 through a lightweight applicationresiding on user 102 devices, may be resident or accessible by theapplication or solution 112.

FIG. 2 shows an exemplary process 200 for implementing, at least inpart, the technology described herein. In particular, process 200depicts a flow as to providing user specific data from a softwareprovider to a user. The process 200 may be performed by a computingdevice. An example architecture of such a computer device is describedbelow with reference to FIG. 5.

At 202, a configuration profile or file is uploaded. The configurationfile may be unique to a user. The configuration files support commandsand other pattern information that may be provided to a softwareprovider. For example, pattern information may include extensible markuplanguage (XML) and JavaScript Object Notation (JSON). Uploading may beperformed by an intermediary party.

At 204, a user inputs a message. For example, the message may be inputin a message box. The message may be in plain text or graphical. Themessage may be received by the intermediary party.

At 206, parsing the message to map to a command is performed. Theparsing may be performed by the intermediary party. In particularly, theuser or input message is parsed and mapped to commands that are definedin the configuration file or profile.

At 208, running the command is performed. The command may particularlybe performed at the backend application or solution at a softwareprovider. After the command is performed, output results are generated.For example, a list of customers as requested by the user in the inputmessage may be generated.

At 210, displaying the results is performed. The displaying may be madeon the device (e.g., mobile device) of the user. The displayed messagemay be performed using a layout defined in the configuration profile.

FIG. 3 shows an exemplary process 300 for implementing, at least inpart, the technology described herein. In particular, process 300depicts another example flow as to providing user defined shortcuts foran application or solution. The process 300 may be performed by acomputing device. An example architecture of such a computer device isdescribed below with reference to FIG. 5.

At 302, preparing the configuration profile is performed. The preparingmay be performed by an intermediary party. The supported configurationprofile may include supported commands and other pattern information,such as a predefined shortcut or menu.

At 304, defining or modifying a shortcut menu is performed. The definingor modifying may be performed by a user. For instance, the user maydefine or modify the shortcut by an input message such as, for example,creating a menu or shortcut “T3” for “top 3 customer names.”

At 306, parsing the user or input message is performed. The parsing maybe performed by the intermediary party. The parsing may include creatinga menu on the screen of the user's device (e.g., mobile device) screen).

At 308, displaying the menu is performed. The displaying may be made onthe device (e.g., mobile device) of the user. The displayed message maybe performed using a layout defined in the configuration profile.

At 310, saving the shortcut or menu is performed. The saved shortcut ormenu may be at the user's device (e.g., mobile device).

FIG. 4 shows an example graphical representation of a user interfaceimplementing the technologies described herein. The representation 400shows a mobile device, and particularly a mobile device interface.Device screen 402 shows a user initiating a lightweight application asdescribed. The lightweight application launches device screen 404 thatshows a menu that allows a user to select particular pertinent datarelated to “customer.” After selecting “Top 3 Name” on the menu, devicescreen 406 is launched which shows information related to “BradThompson” and two other top customers “Emily Powers” and “AmandaCostner.” Device screen 408 allows user to pick “Brad Thompson” and thenlaunches into device screen 410 that shows information related to “BradThompson.” The output message format may be in text or HTML rich text.In certain cases, when a tap is made on the rich text, the lightweightapplication may allow drilling down to the system, application orsolution or from a web page provided by an intermediary party. Incertain implementations, the input message may be for a complex case,such as adding a quick order draft. If input messages are notrecognized, a default page may be shown.

In most implementations, intermediary providers do not have learn anyfront end technology for the lightweight application. Intermediaryparties may not have to be too concerned about the platform or crossplatform issues, e.g., UxStyle. Lightweight applications are relativelyeasy to publish, deploy and maintain. Users can easily subscribe orunsubscribe to lightweight applications, i.e., lightweight applicationsmay be treated like plugins. End users benefit from a familiar messagestyle interaction. The message style further has a conversation historyto allow looking back to. In addition, the message style allows for adrill down capability.

FIG. 5 illustrates an exemplary system 500 that may implement, at leastin part, the technologies described herein. The computer system 500includes one or more processors, such as processor 504. Processor 504can be a special-purpose processor or a general-purpose processor.Processor 504 is connected to a communication infrastructure 502 (forexample, a bus or a network). Depending upon the context, the computersystem 500 may also be called a client device.

Computer system 500 also includes a main memory 506, preferably RandomAccess Memory (RAM), containing possibly inter alia computer softwareand/or data 508.

Computer system 500 may also include a secondary memory 510. Secondarymemory 510 may include, for example, a hard disk drive 512, a removablestorage drive 514, a memory stick, etc. A removable storage drive 514may comprise a floppy disk drive, a magnetic tape drive, an optical diskdrive, a flash memory, or the like. A removable storage drive 514 readsfrom and/or writes to a removable storage unit 516 in a well-knownmanner. A removable storage unit 516 may comprise a floppy disk, amagnetic tape, an optical disk, etc., which is read by and written to byremovable storage drive 514. As will be appreciated by persons skilledin the relevant art(s) removable storage unit 516 includes a computerusable storage medium 518 having stored therein possibly inter aliacomputer software and/or data 520.

In alternative implementations, secondary memory 510 may include othersimilar means for allowing computer programs or other instructions to beloaded into computer system 500. Such means may include, for example, aremovable storage unit 524 and an interface 522. Examples of such meansmay include a program cartridge and cartridge interface (such as thatfound in video game devices), a removable memory chip (such as anErasable Programmable Read-Only Memory (EPROM), or ProgrammableRead-Only Memory (PROM)) and associated socket, and other removablestorage units 524 and interfaces 522 which allow software and data to betransferred from the removable storage unit 524 to computer system 500.

Computer system 500 may also include an input interface 526 and a rangeof input devices 528 such as, possibly inter alia, a keyboard, a mouse,etc.

Computer system 500 may also include an output interface 530 and a rangeof output devices 532 such as, possibly inter alia, a display, one ormore speakers, etc.

Computer system 500 may also include a communications interface 534.Communications interface 534 allows software and/or data 538 to betransferred between computer system 500 and external devices.Communications interface 534 may include a modem, a network interface(such as an Ethernet card), a communications port, a Personal ComputerMemory Card International Association (PCMCIA) slot and card, or thelike. Software and/or data 538 transferred via communications interface534 are in the form of signals 536 which may be electronic,electromagnetic, optical, or other signals capable of being received bycommunications interface 534. These signals 536 are provided tocommunications interface 534 via a communications path 550.Communications path 550 carries signals and may be implemented using awire or cable, fiber optics, a phone line, a cellular phone link, aRadio Frequency (RF) link or other communication channels.

As used in this document, the terms “computer-program medium,”“computer-usable medium,” and “computer-readable medium” generally referto media such as removable storage unit 516, removable storage unit 524,and a hard disk installed in hard disk drive 512. Computer programmedium and computer usable medium can also refer to memories, such asmain memory 506 and secondary memory 510, which can be memorysemiconductors (e.g. Dynamic Random Access Memory (DRAM) elements,etc.). These computer program products are means for providing softwareto computer system 500.

Computer programs (also called computer control logic) are stored inmain memory 506 and/or secondary memory 510. Such computer programs,when executed, enable computer system 500 to implement the presenttechnology described herein. In particular, the computer programs, whenexecuted, enable processor 504 to implement the processes of aspects ofthe above. Accordingly, such computer programs represent controllers ofthe computer system 500. Where the technology described herein isimplemented, at least in part, using software, the software may bestored in a computer program product and loaded into computer system 500using removable storage drive 514, interface 522, hard disk drive 512 orcommunications interface 534.

The technology described herein may be implemented as computer programproducts comprising software stored on any computer useable medium. Suchsoftware, when executed in one or more data processing devices, causesdata processing device(s) to operate as described herein. Embodiments ofthe technology described herein may employ any computer useable orreadable medium, known now or in the future. Examples of computeruseable mediums include, but are not limited to, primary storage devices(e.g., any type of random access memory), secondary storage devices(e.g., hard drives, floppy disks, Compact Disc Read-Only Memory (CD-ROM)disks, Zip disks, tapes, magnetic storage devices, optical storagedevices, Microelectromechanical Systems (MEMS), and nanotechnologicalstorage device, etc.).

A computing system may take the form of any combination of one or moreof inter alia a wired device, a wireless device, a mobile phone, afeature phone, a smartphone, a tablet computer (such as for example aniPad™), a mobile computer, a handheld computer, a desktop computer, alaptop computer, a server computer, an in-vehicle (e.g., audio,navigation, etc.) device, an in-appliance device, a Personal DigitalAssistant (PDA), a game console, a Digital Video Recorder (DVR) orPersonal Video Recorder (PVR), a cable system or other set-top-box, anentertainment system component such as a television set, etc.

In the above description of exemplary implementations, for purposes ofexplanation, specific numbers, materials configurations, and otherdetails are set forth in order to better explain the present invention,as claimed. However, it will be apparent to one skilled in the art thatthe claimed invention may be practiced using different details than theexemplary ones described herein. In other instances, well-known featuresare omitted or simplified to clarify the description of the exemplaryimplementations.

The inventors intend the described exemplary implementations to beprimarily examples. The inventors do not intend these exemplaryimplementations to limit the scope of the appended claims. Rather, theinventors have contemplated that the claimed invention might also beembodied and implemented in other ways, in conjunction with otherpresent or future technologies.

Moreover, the word “exemplary” is used herein to mean serving as anexample, instance, or illustration. Any aspect or design describedherein as exemplary is not necessarily to be construed as preferred oradvantageous over other aspects or designs. Rather, use of the word“exemplary” is intended to present concepts and techniques in a concretefashion. The term “technology,” for instance, may refer to one or moredevices, apparatuses, systems, methods, articles of manufacture, and/orcomputer-readable instructions as indicated by the context describedherein.

As used in this application, the term “or” is intended to mean aninclusive “or” rather than an exclusive “or.” That is, unless specifiedotherwise or clear from context, “X employs A or B” is intended to meanany of the natural inclusive permutations. That is, if X employs A; Xemploys B; or X employs both A and B, then “X employs A or B” issatisfied under any of the foregoing instances. In addition, thearticles “a” and “an” as used in this application and the appendedclaims should generally be construed to mean “one or more,” unlessspecified otherwise or clear from context to be directed to a singularform.

Note that the order in which the processes are described is not intendedto be construed as a limitation, and any number of the described processblocks can be combined in any order to implement the processes or analternate process. Additionally, individual blocks may be deleted fromthe processes without departing from the spirit and scope of the subjectmatter described herein.

One or more embodiments described herein may be implemented fully orpartially in software and/or firmware. This software and/or firmware maytake the form of instructions contained in or on a non-transitorycomputer-readable storage medium. Those instructions may then be readand executed by one or more processors to enable performance of theoperations described herein. The instructions may be in any suitableform, such as but not limited to source code, compiled code, interpretedcode, executable code, static code, dynamic code, and the like. Such acomputer-readable medium may include any tangible non-transitory mediumfor storing information in a form readable by one or more computers,such as but not limited to read only memory (ROM); random access memory(RAM); magnetic disk storage media; optical storage media; a flashmemory, etc.

What is claimed is:
 1. A method for sending data to a user comprising:uploading a configuration file in an intermediary server, wherein theconfiguration file defines a menu; invoking, at a mobile computingdevice of the user, a lightweight application to display the menu in agraphical user interface; displaying, at the device, a first textmessage in response to the user selecting the menu in the graphical userinterface; receiving, by the intermediary server, the first text messagefrom the lightweight application; mapping, by the intermediary server,the first text message to one or more commands supported by theconfiguration file; running, in an application associated with theintermediary server, the one or more mapped commands in order to extractdata requested by the first text message; and displaying, by thelightweight application, a second text message containing the extracteddata in a conversation history that includes the first text message. 2.The method of claim 1, wherein the data is one or both of a multimediaobject or text.
 3. The method of claim 1, wherein the data is extractedfrom an application, a webpage, a database or a combination thereof. 4.The method of claim 1, wherein the configuration file supports apredefined shortcut related to the data.
 5. The method of claim 4,wherein mapping the first text message includes parsing the first textmessage for the predefined shortcut.
 6. The method of claim 1 furthercomprises drilling down to a system, application, solution or web pagein response to a tap on the second text message.
 7. The method of claim1, wherein the first text message is presented in a predefined pattern.8. The method of claim 1 further comprising sending the data to the userto be displayed on a user device.
 9. The method of claim 8, wherein thedisplay is a predefined layout defined by the configuration file.
 10. Adevice comprising: one or more processors; and memory coupled to the oneor more processors configured to: upload a configuration file in anintermediary server, wherein the configuration file defines a menu;invoke a lightweight application residing in a user device to displaythe menu; display a first text message in response to a user selectingthe menu displayed by the lightweight application; parse the first textmessage from the lightweight application; map the first text message toone or more commands supported by the configuration file; invoke anaccessed application associated with the intermediary server to run theone or more mapped commands in order to extract data requested by thefirst text message; and invoke the lightweight application to display asecond text message containing the extracted data in a conversationhistory that includes the first text message.
 11. The device of claim10, wherein the configuration file includes a shortcut related to thedata.
 12. The device of claim 10, wherein the parsed first text messageincludes a shortcut.
 13. The device of claim 10, wherein the data is amultimedia object, text or a combination thereof.
 14. The device ofclaim 10, wherein the data is extracted from the application, a webpage,database or a combination thereof.
 15. The device of claim 10, whereinthe second text message includes rich text that enables drilling down.16. The device of claim 10, wherein the memory is further configured toparse the first text message for a shortcut supported by theconfiguration file.
 17. One or more non-transitory computer-readablemedia storing processor-executable instructions that when executed causeone or more processors to perform operations comprising: uploading aconfiguration profile in an intermediary server, wherein theconfiguration profile specifies supported commands and other patterninformation including a menu and a shortcut defining a replacement for afree text command; displaying, at a mobile computing device of the user,the menu in a graphical user interface of a lightweight applicationresiding in the device; displaying, at the device, a first text messagein response to the user selecting the menu in the graphical userinterface; receiving, by the intermediary server, the first text messagefrom the lightweight application; mapping the first text message to oneor more commands supported by the configuration profile; running, in anapplication associated with the intermediary server, the one or moremapped commands in order to extract information requested by the firsttext message; and displaying, by the lightweight application, a secondtext message containing the extracted information in a conversationhistory that includes the first text message.
 18. The one or morecomputer-readable media of claim 17, wherein the information is text,graphics or a combination thereof.
 19. The one or more computer-readablemedia of claim 17 wherein the configuration profile supports extensiblemarkup language (XML) or JavaScript Object Notation (JSON).